package com.leyou.order.web;

import com.leyou.order.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/pay")
public class PayController {

    @Autowired
    private OrderService orderService;

    /**
     * 微信异步调用我们接口：
     * @param data  ; 里面包含了是否支付成功的参数
     * @return        我们必须返回成功给微信
     *
     * @RequestBody:
     *          1、默认把json字符串参数转成对象
     *          2、我们也可以把xml转成对象
     * @PostMapping:   produces
     *          1、响应值，默认也是json
     *          2、我们修改响应值是xml
     */
    @PostMapping(value = "/notify", produces = "application/xml")
    public ResponseEntity<Map<String, String>> payNotify(@RequestBody  Map<String, String> data){
        //支付通知：微信通知我们之后，我们要修改订单的状态为已支付
        orderService.payNotify(data);

        // 我们返回给微信成功接收，如果不返回，微信会一直通知我们：
        //微信总共会发起多次通知，通知频率为15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h - 总计 24h4m），但微信不保证通知最终一定能成功。
        Map<String, String> msg = new HashMap<>();
        msg.put("return_code", "SUCCESS");
        msg.put("return_msg", "OK");
        return ResponseEntity.ok(msg);
    }
}
